package com.hushan.interceptor;

import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;


/**
 * 定义类方式切点类
 * Created by hushan on 2017/6/17.
 */
@Aspect
@Component
public class AspectLog {

    //定义切点
    @Pointcut("execution(* com.hushan.service.*.*(..))")
    public void performance(){
        //该方法的内容不重要，该方法的本身只是个标识，供@Pointcut注解依附
    }

//    @Pointcut("execution(* com.hushan.service.impl.*.*(..))")
//    private void pointCut(){}
//
//    @Before("pointCut()")  // before通知
//    public void logCreate(){
//
//    }
//
//    @Around("pointCut()")  // 环绕通知 在执行上面其他操作的同时也执行这个方法
//    public Object readAround(ProceedingJoinPoint joinPoint){
//        return new Object();
//    }


    //前置通知
    @Before("performance()")
    public void taskSeats(){
        System.out.println("waiting begin=========");
    }


    //后置通知
    @After("performance()")
    public void applaud(){
        System.out.println("doSomeThing over=========");
    }


    //后置异常通知
    @AfterThrowing("performance()")
    public void demandRefund(){
        System.out.println("doSomeThing error=============");
    }

}
